水無瀬の部屋 > Programming > sample > tools > header > _tools.h |
---|
1: //*********************************************************
2: // プロジェクト: TOOLS
3: // ファイル名: _tools.h
4: //
5: /* << 使用方法 >>
6:
7: //*********************************************************
8: // コンパイル環境 の 指定
9: //*********************************************************
10: #ifndef PRIVATE_TOOLS_HEAD_INCLUDED // 冗長ガード
11: #include <header/_tools.h>
12: #ifndef PRIVATE_TOOLS_HEAD_INCLUDED // ガード名の検査
13: #error "? PRIVATE_TOOLS_HEAD_INCLUDED"
14: #endif // #ifndef PRIVATE_TOOLS_HEAD_INCLUDED
15: #endif // #ifndef PRIVATE_TOOLS_HEAD_INCLUDED
16:
17: */
18: //*********************************************************
19: #ifndef PRIVATE_TOOLS_HEAD_INCLUDED // 多重インクルードの防止
20: #define PRIVATE_TOOLS_HEAD_INCLUDED
21:
22:
23: //*********************************************************
24: // コンパイル環境 の 指定
25: //*********************************************************
26: // コンパイラオプションの設定
27: #pragma warning( push, 4 ) // 警告レベルを最大にする
28:
29:
30: // リンカオプションの設定
31: #ifdef _MSC_VER
32: #if (1200 <= _MSC_VER) &&(_MSC_VER < 1300)
33: #pragma comment(linker, "/WARN:3") // 警告レベルを最大にする
34: //#pragma comment(linker, "/SAFESEH") // 安全な例外ハンドラがあるイメージを作る
35: #pragma comment(linker, "/MAPINFO:EXPORTS") // マップファイルにエクスポートされた関数を含める
36: #pragma comment(linker, "/MAPINFO:LINES") // マップファイルに行番号情報を含める
37: #pragma comment(linker, "/MAPINFO:FIXUPS") // マップファイルにベースリロケーション情報を含める
38: #endif // #if _MSC_VER == 1200
39: #endif // #ifdef _MSC_VER
40:
41:
42: // ライブラリの指定
43: #pragma comment( lib, "COMCTL32" )
44: #pragma comment( lib, "VERSION" )
45: #pragma comment( lib, "IMM32" )
46: #pragma comment( lib, "RASAPI32" )
47: #pragma comment( lib, "WINMM" )
48: #pragma comment( lib, "LZ32" )
49: #pragma comment( lib, "SETUPAPI" )
50:
51:
52: // WINVER の定義 …… プレーンな Windows95 を対象とする
53: #ifndef WINVER
54: #define WINVER 0x0400
55: #endif // #ifndef WINVER
56:
57:
58: // _WIN32_IE の定義 …… プレーンな Windows95 を対象とする
59: #ifndef _WIN32_IE
60: #define _WIN32_IE 0x01ff
61: #endif // #ifndef _WIN32_IE
62:
63:
64: // _WIN32_WINDOWS の定義 …… 対象 ???
65: #ifndef _WIN32_WINDOWS
66: #define _WIN32_WINDOWS 0x03ff
67: #endif // #ifndef _WIN32_WINDOWS
68:
69:
70: // _WIN32_WINNT の定義 …… 対象 ???
71: #ifndef _WIN32_WINNT
72: #define _WIN32_WINNT 0x03ff
73: #endif // #ifndef _WIN32_WINNT
74:
75:
76: // STRICT の定義 …… 厳密な型一致規則を採用
77: #ifndef STRICT
78: #define STRICT
79: #endif // #ifndef STRICT
80:
81:
82: // _CRT_SECURE_NO_DEPRECATE の定義 …… MSVC 固有の SECURE CRT を強制しない
83: #ifndef _CRT_SECURE_NO_DEPRECATE
84: #define _CRT_SECURE_NO_DEPRECATE
85: #endif // #ifndef STRICT
86:
87:
88: //*********************************************************
89: // マクロ の 定義
90: //*********************************************************
91: //
92: #define null NULL
93:
94:
95: //
96: #define until( exp ) while( !(exp) )
97: #define unless( exp ) if ( !(exp) )
98:
99:
100: // 型 type が 有符号型 であれば 真 を返す
101: #define is_signed(type) ( ((type)-1) < 0 )
102:
103:
104: // 型 type が 無符号型 であれば 真 を返す
105: #define is_unsigned(type) ( 0 < ((type)-1) )
106:
107:
108: // 配列の要素数
109: #define numof(array) ( sizeof(array) / sizeof(array[0]) )
110:
111:
112: // 64 bit 環境対応 のためのキャスト
113: #define _w64_static_cast static_cast
114: #define _w64_reinterpret_cast reinterpret_cast
115:
116:
117: // 明示的な bool 型へのキャスト
118: // 非 bool 値を明示的に bool 型へキャストした場合に出る警告 C4800 を抑制する
119: // " C4800 : ブール値を 'true' または 'false' に強制的に設定します "
120: // 暗黙的なキャストへの警告は抑制しない
121: #define boolean_cast(exp) ( !!(exp) )
122:
123:
124: // メモ
125: #define STRINGIZE(x) #x
126: #define STRINGIZEEX(macro) STRINGIZE(macro)
127: #define memo(msg) message(__FILE__"("STRINGIZEEX(__LINE__)") : "msg)
128:
129:
130: // COMPILE_ASSERT( exp ) の定義
131: #ifdef _DEBUG // デバッグ版
132: #define COMPILE_ASSERT( exp ) typedef char DUMMY_ARRAY_FOR_COMPILE_ASSERT[ ( exp ) ? 1 : -1 ] // デバッグ
133: #else // リリ−ス版
134: #define COMPILE_ASSERT( exp )
135: #endif // #ifndef _DEBUG
136:
137:
138: //*********************************************************
139: // C 標準ヘッダ の インクルード
140: //*********************************************************
141: //#include <tchar.h>
142: #include <stddef.h>
143: //#include <stdlib.h>
144: #include <stdio.h>
145: #include <string.h>
146:
147:
148: //*********************************************************
149: // WINDOWS 標準ヘッダ の インクルード
150: //*********************************************************
151: #include <windows.h>
152: #include <windowsx.h>
153: #include <shlobj.h>
154:
155:
156: //*********************************************************
157: // 危険関数 の 隠蔽
158: //*********************************************************
159:
160: // strcpy(), wcscpy(), _mbscpy(), _tcscpy()
161: #ifndef USE_STRCPY
162: #undef _tcscpy
163: #define _tcscpy _tcscpy_is_unsafe
164: #undef strcpy
165: #define strcpy strcpy_is_unsafe
166: #undef wcscpy
167: #define wcscpy wcscpy_is_unsafe
168: #undef _mbscpy
169: #define _mbscpy _mbscpy_is_unsafe
170: #else
171: #pragma memo( "strcpy() を使用します。" )
172: #endif // #ifndef USE_STRCPY
173:
174:
175: // strncpy(), wcsncpy(), _mbsncpy(), _tcsncpy()
176: #ifndef USE_STRNCPY
177: #undef _tcsncpy
178: #define _tcsncpy _tcscpy_is_unsafe
179: #undef strncpy
180: #define strncpy strncpy_is_unsafe
181: #undef wcsncpy
182: #define wcsncpy wcsncpy_is_unsafe
183: #undef _mbsncpy
184: #define _mbsncpy _mbsncpy_is_unsafe
185: #else
186: #pragma memo( "strncpy() を使用します。" )
187: #endif // #ifndef USE_STRNCPY
188:
189:
190: // strcat(), wcscat(), _mbscat(), _tcscat()
191: #ifndef USE_STRCAT
192: #undef _tcscat
193: #define _tcscat _tcscat_is_unsafe
194: #undef strcat
195: #define strcat strcat_is_unsafe
196: #undef wcscat
197: #define wcscat wcscat_is_unsafe
198: #undef _mbscat
199: #define _mbscat _mbscat_is_unsafe
200: #else
201: #pragma memo( "strcat() を使用します。" )
202: #endif // #ifndef USE_STRCAT
203:
204:
205: // strncat(), wcsncat(), _mbsncat(), _tcsncat()
206: #ifndef USE_STRNCAT
207: #undef _tcsncat
208: #define _tcsncat _tcsncat_is_unsafe
209: #undef strncat
210: #define strncat strncat_is_unsafe
211: #undef wcsncat
212: #define wcsncat wcsncat_is_unsafe
213: #undef _mbsncat
214: #define _mbsncat _mbsncat_is_unsafe
215: #else
216: #pragma memo( "strncat() を使用します。" )
217: #endif // #ifndef USE_STRNCAT
218:
219:
220: // strtok(), wcstok(), _mbstok(), _tcstok()
221: #ifndef USE_STRTOK
222: #undef _tcstok
223: #define _tcstok _tcstok_is_unsafe
224: #undef strtok
225: #define strtok strtok_is_unsafe
226: #undef wcstok
227: #define wcstok wcstok_is_unsafe
228: #undef _mbstok
229: #define _mbstok _mbstok_is_unsafe
230: #else
231: #pragma memo( "strtok() を使用します。" )
232: #endif // #ifndef USE_STRTOK
233:
234:
235: // sprintf(), swprintf(), _stprintf()
236: #ifndef USE_SPRINTF
237: #undef _stprintf
238: #define _stprintf _stprintf_is_unsafe
239: #undef sprintf
240: #define sprintf sprintf_is_unsafe
241: #undef swprintf
242: #define swprintf swprintf_is_unsafe
243: #else
244: #pragma memo( "sprintf() を使用します。" )
245: #endif // #ifndef USE_SPRINTF
246:
247:
248: // vsprintf(), vswprintf(), _vstprintf()
249: #ifndef USE_VSPRINTF
250: #undef _vstprintf
251: #define _vstprintf _vstprintf_is_unsafe
252: #undef vsprintf
253: #define vsprintf vsprintf_is_unsafe
254: #undef vswprintf
255: #define vswprintf vswprintf_is_unsafe
256: #else
257: #pragma memo( "vsprintf() を使用します。" )
258: #endif // #ifndef USE_VSPRINTF
259:
260:
261: // scanf(), wscanf(), _stscanf()
262: #ifndef USE_SCANF
263: #undef _stscanf
264: #define _stscanf _stscanf_is_unsafe
265: #undef scanf
266: #define scanf scanf_is_unsafe
267: #undef wscanf
268: #define wscanf wscanf_is_unsafe
269: #else
270: #pragma memo( "scanf() を使用します。" )
271: #endif // #ifndef USE_SCANF
272:
273:
274: // gets(), _getws(), _getts()
275: #ifndef USE_GETS
276: #undef _getts
277: #define _getts _getts_is_unsafe
278: #undef gets
279: #define gets gets_is_unsafe
280: #undef _getws
281: #define _getws _getws_is_unsafe
282: #else
283: #pragma memo( "gets() を使用します。" )
284: #endif // #ifndef USE_GETS
285:
286:
287: // rand(), srand()
288: #ifndef USE_RAND
289: #undef rand
290: #define rand rand_is_unsafe
291: #undef srand
292: #define srand srand_is_unsafe
293: #else
294: #pragma memo( "rand() を使用します。" )
295: #endif // #ifndef USE_RAND
296:
297:
298: //*********************************************************
299: // 危険 API の 隠蔽
300: //*********************************************************
301:
302: // SHGetPathFromIDList()
303: #ifndef USE_SHGETPATHFROMIDLIST
304: #undef SHGetPathFromIDList
305: #define SHGetPathFromIDList SHGetPathFromIDList_is_unsafe
306: #else
307: #pragma memo( "SHGetPathFromIDList() を使用します。" )
308: #endif // #ifndef USE_SHGETPATHFROMIDLIST
309:
310:
311: // ShellExecute(), ShellExecuteEx()
312: #ifndef USE_SHELLEXECUTE
313: #undef ShellExecute
314: #define ShellExecute ShellExecute_is_unsafe
315: #else
316: #pragma memo( "ShellExecute() を使用します。" )
317: #endif // #ifndef USE_SHELLEXECUTE
318:
319:
320: #endif // #ifndef PRIVATE_TOOLS_HEAD_INCLUDED
321:
322:
323: //** end **
324:
参照:
lnkctrl.h, picker.h, browsbox.h, dyndlg.h, curfile.h, icofile.h, argcargv.h, dbgalloc.h, dbgasert.h, dbgtrace.h, myweburl.h, ptrlist.h, snprintf.h, toolbase.h, toolctrl.h, tooldbg.h, toolptrc.h, toolsys.h, toolsysx.h, toolwind.h, _tools.h, toolmci.h, atoffset.h, binary.h, ccslock.h, crc16.h, crc32.h, md4.h, md5.h, pathargv.h, sha1.h, sha256.h, sha512.h, toolnext.h, toolold.h, susie.h, tools.h, workthrd.h
水無瀬の部屋 > sample > tools > header > _tools.h |
---|
このページは cpp2web が出力しました。
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
http://katsura-kotonoha.sakura.ne.jp/prog/code/tools/header/_tools_h.shtml